// 导入用户集合构造函数
const { Users } = require('../../model/user');

module.exports = async (req, res) => {
    // 接收请求参数
    const { email, password } = req.body;
    // 对数据做二次验证 由于在浏览器上做的javascri验证可以被浏览器禁用
    // 一旦禁用 相当于浏览器对数据的验证就会失效 因此服务器必须对数据做出验证
    if (email.trim().length == 0 || password.trim().length == 0) {
        // return res.status(400).send('<h4>邮件地址或密码输入错误</h4>');
        return res.status(400).render('admin/error', {
            msg: "邮件地址或密码输入错误"
        });
    }
    // let user = await User.findOne({ email: email });
    // 如果查询到用户 user是一个对象类型 对象中存储的是用户信息
    // 如果没有查询到 user为空
    let user = await Users.findOne({ email });

    if (user) {
        if (password == user.password) {
            // 为req添加属性 并将user.username赋值给这个属性
            // 将用户名存储在请求对象中
            req.session.username = user.username;
            // 将用户角色存储在session对象中
            req.session.role = user.role;
            // 将用户数据放在locals属性中 这个数据在所有的模板中都可以获取到
            // 需要用到app.locals 但是这里没有app 不需要require app.js
            // req.app就是在app.js文件中创建的app
            req.app.locals.userInfo = user;
            // 对用户的角色进行判断
            if (user.role == 'admin') {
                // 重定向到用户列表页面
                res.redirect('/admin/user');
            } else {
                // 重定向到博客首页
                res.redirect('/home/');
            }
        } else {
            return res.status(400).render('admin/error', {
                msg: "邮件地址或密码输入错误"
            });
        }
    } else {
        return res.status(400).render('admin/error', {
            msg: "邮件地址或密码输入错误"
        });
    }
};